/**
 * 
 */
package ma.moliere.presentation.util.validateurs;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import ma.moliere.transverse.Constantes;

/**
 * moyenneValidateur permet de vérifier si la moyenne saisie est correcte.Une moyenne doitre comprise entre 0.0 et 10.0
 * 
 * @author SASMAMI
 */
public class MoyenneValidateur implements Validator {

	/**
	 * {@inheritDoc}
	 */
	@Override
	public final void validate(final FacesContext context, final UIComponent component, final Object value) {

		// La valeur du ratio saisie
		String moyenne = value.toString();

		// LE pattern appliqué
		Pattern pattern = Pattern.compile("\\d{1,2}+(\\.\\d{1,2})?");

		// Match the given string with the pattern
		Matcher m = pattern.matcher(moyenne);

		// vérifie si la pattern est respecté
		boolean matchFound = m.matches();

		if (!matchFound || (Double.valueOf(moyenne)) > Double.valueOf(Constantes.VAL_10)) {
			FacesMessage message = new FacesMessage();
			message.setDetail("La moyenne doit être comprise entre 0 et 10 avec au maximum deux décimales");
			message.setSummary("La moyenne doit être comprise entre 0 et 10 avec au maximum deux décimales");
			message.setSeverity(FacesMessage.SEVERITY_ERROR);
			throw new ValidatorException(message);
		}
	}

}
